# 案例 银行取钱
money = 5000000  # 默认每个客户的卡里有5000000


# 查余额函数
def _list(data):
    global money
    print(f'尊敬的{data}，您的账户余额为{money}')


# 存款函数
def add_list(data):
    global money
    money += data
    print(f'存款成功，您的账余额为{money}')


# 取款函数
def edd_list(data):
    global money
    money -= data
    print(f'取款成功，您的账余额为{money}')


# 主菜单函数
def menu(data):
    cont = input(f'尊敬的{data},请输入"查询余额""存款""取款""退出",以进行相应的操作')
    if cont == '查询余额':
        _list(data)
        menu(data)
    if cont == '存款':
        add_list(int(input('请输入你需要存款的额度')))
        menu(data)
    if cont == '取款':
        edd_list(int(input('请输入你需要取款的额度')))
        menu(data)
    if cont == '退出':
        if input('您已成功退出当前账号，需要重新登录吗？ y/n') == 'y':
            menu(input('请输入您的姓名'))
        else:
            print('退出成功')
            return
    else:
        print('请输入正确的文字以便您的操作')
        menu(data)

menu(input('请输入您的姓名'))
# python的函数，与js的回调函数相似，已经写好的，但是没有立刻执行
# python内置函数，len()，获取字符串或数组的长度
print(len([1, 2, 3, 4, 1, 1, 1, 1]))
print(len('我有多长?'))


# 函数传参
def add(x, y):
    """
    在函数内按三下引号键后回车即可生成函数说明文档模板，鼠标悬停在函数名上可以弹出去说明文档框
    :param x:表示相加的一个数字
    :param y:表示相加的另一个数字
    :return:返回的是两数相加的结果
    """
    print('x+y=', x + y)
    return x + y


print("add函数返回值", add(1, 2))


# 自己写一个获取长度的函数
def my_len(data):
    count = 0
    for i in data:
        count += 1
    print(f'这个东西的长度为{count}')
    add(1, 2)  # 可以嵌套调用


my_len([1, 2])


def none(data):
    return


print(none('1'))  # 如果返回的是空值就会返回none,不写return就会默认返回none
print(type(none('1')))  # <class 'NoneType'>

# 局部变量和全局变量
num1 = 100  # 全局变量
num4 = 100  # 全局变量


def test(data):
    num2 = 200  # 局部变量
    global num3
    num3 = 300  # 声明一个全局变量
    global num4
    num4 = 400  # 覆盖外部的全局变量
    print(num2, num3, num4)


print(num1)  # 100
print(num4)  # 100
# print(num3)会报错
test(1)  # 函数执行后
print(num3)  # 300
print(num4)  # 400
# print(num2)会报错
# print(num2)会报错
